package negocios.gerenciadores;

import java.util.ArrayList;

import negocios.cinemaBeans.Exibicao;
import negocios.cinemaBeans.FiltroExibicao;
import negocios.cinemaBeans.Sala;
import dados.RepositorioSala;

public class GerenciadorDeSala implements IGerenciadorDeSala {
	private RepositorioSala repositorioSala = dados.RepositorioSala.getInstanciaSala();

	public void criarSala(int numSala, int qtdAssentos) {
		Sala sala = new Sala(numSala, qtdAssentos);
		this.repositorioSala.addSala(sala);
	}

	
	public void adicionarExibicao(int numSala, Exibicao exibicao) {
		for(Sala sala: this.repositorioSala.getListaSala()){
			if(sala.getNumSala()==numSala){
				sala.addExibicao(exibicao);
				break;
			}
				
		}
		
		
	}

	
	public ArrayList<Sala> filtrarSala(FiltroExibicao filtro) {
		ArrayList<Sala> listaExibicao = new ArrayList<Sala>();
		
		for (Sala sala : this.repositorioSala.getListaSala()){
			this.verificaFiltro(sala, filtro);
		}
		return listaExibicao;
	}



	public Sala escolheSala(int indice) {
		Sala salaEscolhida = null; 
		if(indice<this.repositorioSala.getListaSala().size()){
			salaEscolhida = this.repositorioSala.getListaSala().get(indice);
		}
		return salaEscolhida;
	}

	
	
	public void deletarSala(Sala sala) {
		this.repositorioSala.delSala(sala);		
	}
	
	
	
	private boolean verificaFiltro(Sala sala, FiltroExibicao filtro){
		boolean verifica = false;
		
		for (Exibicao exibicao : sala.getExibicao()){
			if (filtro.getTitulo()!= null){
				if(exibicao.getFilme().getTitulo().equals(filtro.getTitulo())){
					verifica = true;
				}else{
					return verifica = false;
				}
			}
			if (filtro.getHorario()!=null){
				if(exibicao.getHorario().equals(filtro.getHorario())){
					verifica = true;
				}else{
					return verifica = false;
				}
			}	
		}
		
		return verifica;
	}



}
